home *** CD-ROM | disk | FTP | other *** search
-
-
- ZKick V3.01 -- Copyright (C) 1991 by Daniel Zenchelsky
-
- This program may be freely copied, as long as all copyright
- notices are left intact and unchanged.
-
- -----------------------------------------------------------------------------
-
- Overview
- --------
-
- ZKick is a Kickstart 2.0 kickfile loader, similar to KickIt by
- Bryce Nesbitt, but with several advantages. First of all, ZKick will work
- in ANY Amiga with a 512K or larger ram board at ANY (*) memory location, no
- matter which slot it's in. Second, when ZKick loads Kickstart, it survives
- a reboot! When you hit CTRL-AMIGA-AMIGA, you are placed back in Kickstart
- 2.0. This feature can be disabled with the "-die" option.
-
- ZKick 3.0 is now able to relocate Kickstart 2.0 V37.175 to *ANY*
- location. It no longer requires ram at $200000. If you are using a
- previous version of Kickstart, ZKick can not relocate Kickstart and
- therefore you must have a 512K or greater ram board at $200000.
-
- NOTE: If you place Kickstart in the middle of a ram board, ZKick
- will divide the ram board into two logical devices. It will then tell you
- that it found more devices than physically exist. This is OK.
-
- NOTE: ZKick is only useful for developers who have an Amiga
- 500/2000 kickfile from Commodore. It will NOT work with a 3000 Kickstart
- file.
-
- (*) Due to the nature of BCPL, Kickstart 2.0 must be longword
- aligned.
-
- Theory of operation
- -------------------
-
- ZKick works by building a table of expansion devices under
- Kickstart 1.3 (1.2), adding a ROMTag to the resident list, patching
- ColdCapture and CoolCapture, loading Kickstart 2.0 into memory at $200000
- and reseting the machine. When 1.3 starts up, the ColdCapture routine
- skips the >512k chip ram test normally done by exec. Normally exec clears
- all of chip ram if it finds more than 512k of it. Then, the ColdCapture
- routine patches exec to keep it from stomping on the first few bytes of
- memory at $200000. Expansion library (still under 1.3) then configures all
- of the AutoConfig devices. Next, our ROMTag is executed, which detects
- that it is still under 1.3 and jumps to the start of Kickstart 2.0.
-
- Now we're running under Kickstart 2.0. Expansion library is the
- first thing executed, but it doesn't find any expansion devices because
- they were all configured by the 1.3 expansion library. Then the ROMTag is
- again executed. It adds all of the expansion devices previously configured
- by 1.3 expansion library to the 2.0 expansion library's ConfigDev list, and
- all of the memory boards to exec's memory list. From here on the normal
- startup is taken, during which each board is initialized.
-
-
- Requirements
- ------------
-
- Setup A:
-
- 1) Using Kickstart 2.0 V37.175
- 2) Total memory must be 1.5M or greater.
- 3) There must be a 512k or greater ram board.
-
- OR
-
- Setup B:
-
- 1) Using Kickstart 2.0 V37.175
- 2) Total memory must be 1M or greater.
- 3) There must be a 512k or greater ram board at $C00000
- (for example, an A501)
-
- OR
-
- Setup C:
-
- 1) Using another version of Kickstart 2.0
- 2) Total memory must be 1.5M or greater.
- 3) There must be a 512k or greater ram board at $200000
-
- Usage
- -----
-
- ZKick [options] kickfile
-
-
- Options
- -------
-
- The "-v175" option enables Kickstart relocation. If you are not
- using Kickstart V37.175, DO NOT USE THIS OPTION! If you are using
- Kickstart V37.175, you must put this option before the "-c0" or "-start"
- option.
-
- NOTE: In order to relocate Kickstart 2.0 V37.175, I have created
- my own tools for determining all of the necessary relocation offsets, and
- included the proper offsets for V37.175 in ZKick. Although I am 99.99%
- sure that these are the correct offsets, they are in no way "official," and
- I can not and will not be held liable for any damage cause by using them.
- IF YOU USE THE "-v175" OPTION, YOU DO SO AT YOUR OWN RISK. However, I
- strongly believe that these offsets are correct, and if you have any
- problems, please let me know.
-
- The "-start <hex address>" option allows the user to specify the
- starting location of Kickstart. You must have at least 512k of ram at the
- specified address. This option requires the "-v175" option, and is not
- compatible with the "-c0" option.
-
- The "-c0" option is used to load Kickstart into $C00000 memory, and
- will allow ZKick to be used on a 1 meg machine. Before using this command,
- you must remove $C00000 ram from the memory list by using "NoC0Ram."
- Specifically, it has the following effects: 1) sets the start address to
- $C00000, 2) doesn't check for ram at $C00000, 3) loads Kickstart directly
- into $C00000 with no buffering, and 4) patches Kickstart 2.0 to ignore
- $C00000 ram. This option requires the "-v175" option, and is not
- compatible with the "-start" option.
-
- The "-debug" option will let you see all kinds of debugging
- information.
-
- The "-print" option will cause ZKick to dump more debugging
- information to the printer.
-
- The "-die" option is used to tell ZKick not to survive reboots, so
- that when the machine is reset, the Kickstart ROM will be run instead.
-
- The "-mmu" option will cause ZKick to reset the MMU, if it exists.
- *NOTE* This is different than the previous versions.
-
- The "-noreset" option causes ZKick to skip the initial RESET and
- just jump into Kickstart. This option is useful with some GVP boards which
- do not pass the RESET signal properly.
-
- The "-nochecksum" option will keep ZKick from going to 1.3 if the
- Kickstart checksum is not valid.
-
- (Using the options "-noreset" and "-nochecksum" together will make ZKick
- behave as it did in version 2.01)
-
-
- KillZKick
- ---------
-
- Also included is the program KillZKick. KillZKick removes ZKick
- from memory, and reboots the system with the Kickstart ROM.
-
- NoC0Ram
- -------
-
- NoC0Ram is a utility which removes $C00000 ram from the memory
- list. In order to do this, the machine is REBOOTED.
-
- YOU MUST USE NOC0RAM BEFORE LOADING KICKSTART INTO $C00000 RAM.
-
- It is necessary to remove this ram from the memory list before
- using ZKick, because if it is not removed, exec.library will put ExecBase
- into it, and ExecBase will then be erased when ZKick loads Kickstart.
-
- NoC0Ram will only reboot the system if you are running under
- 1.2/1.3 and if exec believes there is $C00000 ram. Therefore, it is safe
- to put in your startup-sequence, without fear of it continually rebooting
- the system.
-
- Troubleshooting
- ---------------
-
- If you can't get ZKick to work, make sure you're using a 500/2000
- version of Kickstart, version 36.141 (Release 2.0) or higher. Try the
- following things before contacting me:
-
- 1) Try using "ZKick -noreset Kickfile"
-
- If this fails, set up your printer correctly and use the command
- "ZKick -debug -print Kickfile." Mail me a copy of the output along with a
- COMPLETE description of your hardware configuration, and hopefully I'll be
- able to determine the problem.
-
-
- Reaching me
- -----------
-
- I can be reached on Bix as dzenc, on the internet as
- dzenc@gnu.ai.mit.edu, or on bitnet as dzenc%gnu.ai.mit.edu@mitvma.bitnet.
-
-
- Special thanks to
- -----------------
-
- Dan Babcock for sending me an excellent article that he wrote which
- showed how to set up RomTag modules correctly, as well as his many ideas
- for bug fixes and improvements.
-
- Dave Haynie, for the MMU code which I pilfered from SetCPU.
-
- And my beta testers:
-
- Martin Allred
- Joanne Dow
- Frank Edwards
- Valentin Pepelea
- Erik Quackenbush
- Mike Thomas
-
- Apologies to anyone I missed.
-
-
- History
- -------
-
- ZKick 3.01 fixes several MAJOR bugs that were in ZKick 3.0.
-
- ZKick 3.00 allows full relocation of Kickstart 2.0 V37.175, and now
- works on 1 Meg machines.
-
- ZKick 2.31 now properly chains the KickTag and KickMem vectors.
- This should increase compatibility with other boot surviving programs.
-
- ZKick 2.30 does a version check in its ColdCapture and CoolCapture
- routines. Before, it relied on the fact that they were only executed under
- 1.2/1.3.
-
- ZKick 2.24 hopefully fixes the mmu code! Now it should properly
- clear the mmu IF you use the "-mmu" option. Thanks to Christian Schneider
- for picking up my silly error.
-
- ZKick 2.23 adds support for delayed GURUs. Normally, exec pokes a
- "HELP" into location 0, stores the GURU info at $0100, and restarts the
- machine. When exec is restarted, it checks location zero for "HELP,"
- stores the GURU info in ExecBase, and clears location 0. Later, exec pops
- up an alert. The problem is that ZKick starts Kickstart 2.0 before exec
- gets a chance to display the alert. ZKick now checks for a delayed GURU
- and pokes "HELP" back into location 0 before starting Kickstart 2.0.
-
- ZKick 2.22 changes the default behavior to NOT reseting the mmu, as
- many people said that they couldn't get it to work on 020/030 machines
- unless this option was off.
-
- ZKick 2.21 adds the "-print" option.
-
- ZKick 2.20 adds many new command line options.
-
- ZKick 2.10b fixes a problem which caused ZKick to configure each
- device twice.
-
- ZKick 2.10a fixes a typo in Zkick 2.10, which caused it not to
- recognize an MMU ('=' instead of '==').
-
- ZKick 2.10 employs better error checking. In addition, if an MMU
- exists, it clears it before starting 2.0.
-
- ZKick 2.01 fixes a bug which caused ZKick not to work with most
- autoboot controllers.
-
- ZKick 2.0 is the first "public" release.
-
- -Dan
-
- -----------------------
-
- P.S. This is my first attempt at assembler programming on the 68000.
- I hope you enjoy the results!!!
-
-